package com.clear.honghefinance.biz.modules.assist_calculate_summary.service;

import com.clear.honghefinance.biz.modules.assist_calculate_summary.domain.dto.*;
import com.clear.honghefinance.biz.modules.assist_calculate_summary.domain.entity.AssistCalculateSummary;
import com.baomidou.mybatisplus.extension.service.IService;
import com.clear.honghefinance.biz.modules.assist_calculate_summary.domain.vo.GetAssistCalculateBaseVO;
import com.clear.honghefinance.biz.modules.assist_calculate_summary.domain.vo.ListAssistCalculateBaseVO;
import com.clear.honghefinance.biz.modules.assist_calculate_summary.domain.vo.ListAssistCalculateSummaryVO;
import com.clear.honghefinance.common.dto.entity.PageResult;

/**
 * <p>
 * 辅助核算汇总表（所有类别） 服务类
 * </p>
 *
 * @author 程序员clear
 * @since 2024-08-23
 */
public interface IAssistCalculateSummaryService extends IService<AssistCalculateSummary> {

    /**
     * 创建辅助核算
     *
     * @param dto
     * @return
     */
    <T extends CreateAssistCalculateBaseDTO> boolean create(T dto);

    /**
     * 修改辅助核算
     *
     * @param dto
     * @param <T>
     * @return
     */
    <T extends UpdateAssistCalculateBaseDTO> boolean update(T dto);

    /**
     * 查询辅助核算列表
     *
     * @param dto
     * @return
     */
    PageResult<ListAssistCalculateSummaryVO> list(ListAssistCalculateSummaryDTO dto);

    /**
     * 查询辅助核算列表
     *
     * @param dto
     * @param returnType
     * @param <R>
     */
    <R extends ListAssistCalculateBaseVO> PageResult<R> list(ListAssistCalculateDTO dto, Class<R> returnType);

    /**
     * 查询辅助核算详情
     * @param id
     * @param returnType
     * @return
     * @param <R>
     */
    <R extends GetAssistCalculateBaseVO> R getDetailById(Long id, Class<R> returnType);

    /**
     * 禁用或启用辅助核算
     *
     * @param dto
     * @return
     */
    Boolean updateDisable(UpdateAssistCalculateDisableDTO dto);

    /**
     * 删除辅助核算
     *
     * @param dto
     * @return
     */
    Boolean delete(DeleteAssistCalculateDTO dto);
}
